package com.copsoftware.reportes.geografico.support;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.copsoftware.reportes.geografico.delegate.ReporteGeograficoDelegate;
import com.copsoftware.struts.forms.AdministradorTematicosForm;
import com.copsoftware.utils.constants.CSConstants;
import org.apache.log4j.Logger;

import fr.improve.struts.taglib.layout.datagrid.Datagrid;

public class BeanGeoReportActionProccessor extends BeanBaseGeoReportProcessor {
	static Logger log = Logger.getLogger(BeanGeoReportActionProccessor.class);
	AdministradorTematicosForm form;

	public BeanGeoReportActionProccessor(AdministradorTematicosForm form) {
		super(form);
		this.form = form;
	}

	public void procesarAcciones(HttpServletRequest request) {
		ReporteGeograficoDelegate reporteGeografico = new ReporteGeograficoDelegate();
		if (esGuardarSelected) {
			reporteGeografico.guardarForm(form);
		}

		if (esGenerarSelected) {
			if (CSConstants.CONFIG_TEMATICO.equals(posicionWizzard)) {
				List listaJSONObjects=null;
				if (CSConstants.TIPO_TEMATICO_DELITOS.equals(tipoTematico)) {
					List listaDelitos = (List) request.getSession()
					.getServletContext().getAttribute("TIPO_DELITO");
					Map mapCodDelitos = BeanMapBuilder.procesar(listaDelitos);
					listaJSONObjects = BeanPopulateTematicoPuntualDelito
							.crearJSONObjects(form,mapCodDelitos);
					form.setListaJSONObjects(listaJSONObjects);
				}
				if (CSConstants.TIPO_REPORTE_ZONAL.equals(tipoReporte)) {
					Collection listaBeanTematicoZonal = (Collection) form
							.getListaTablaZonal().getAddedData();
					listaJSONObjects = BeanPopulateTematicoZonal
							.crearJSONObjects(listaBeanTematicoZonal);
				}
				form.setListaJSONObjects(listaJSONObjects);
			}

		}
		if (esCalcOcurSelected) {
			Datagrid datagrid = form.getListaTablaZonal();
			// BeanTematicoZonal bnTematicoZonal = new BeanTematicoZonal();
			// BeanOcurrencia bnOcurrencia = new BeanOcurrencia();
			// bnOcurrencia.setRangoMin("0");
			// bnOcurrencia.setRangoMax("16");
			// bnTematicoZonal.setBnOcurrencia(bnOcurrencia);
			// listaZonas.add(bnTematicoZonal);
			int numIntervalos = Integer.parseInt(form.getNumeroIntervalos());
			int numMaxDelito = 29;
			List listaBeanTematicoZonal = BeanPopulateTematicoZonal.procesar(
					numIntervalos, numMaxDelito);
			// List listaZonas =
			// BeanCrearTematicoZonal.procesar(listaBeanOcurrencia);
			// JSONObject jsonObject = new
			// JSONObject(listaBeanTematicoZonal.get(0));
			// form.setJson(jsonObject.toString());
			// List listaJSONObjects = new ArrayList();
			// listaJSONObjects.add(new BeanJSONString(jsonObject.toString()));
			// listaJSONObjects.add(new BeanJSONString(jsonObject.toString()));
			// form.setListaJSONObjects(listaJSONObjects);
			datagrid.setData(listaBeanTematicoZonal);
			form.setListaTablaZonal(datagrid);

		}
		if (esSiguienteSelected) {
			log.info("Es Siguiente Seleccionado");
			if (CSConstants.SELEC_TEMATICO.equals(posicionWizzard)) {
				if (CSConstants.TIPO_TEMATICO_DELITOS.equals(tipoTematico)) {
					Datagrid datagrid = form.getListaTablaDelitos();
					List listaDelitos = (List) request.getSession()
							.getServletContext().getAttribute("TIPO_DELITO");
					// List listaBeanTematicoPuntual =
					// reporteGeografico.cargarBeanTematicoPuntual();
					List listaBeanTematicoPuntual = BeanPopulateTematicoPuntualDelito
							.procesar(listaDelitos);
					datagrid.setData(listaBeanTematicoPuntual);
					form.setListaTablaDelitos(datagrid);
				}
			}
			
		}
		request.setAttribute("AdministradorTematicosForm", form);
	}
}
